#include<stdio.h>

typedef enum {
    ON,
    OFF,
    SLEEP
} DeviceState;

typedef struct {
    int id;
    char name[20];
    DeviceState state;  // 改名为state更合适
} Device;

// 状态转换函数
const char* statusToString(DeviceState status) {
    switch(status) {
        case ON:
            return "开机";
        case OFF:
            return "关机";
        case SLEEP:
            return "睡眠";
        default:
            return "未知状态";
    }
}

int main() {
    // 创建并初始化两个设备
    Device d1 = {1001, "笔记本电脑", ON};
    Device d2 = {1002, "智能手机", OFF};
    
    // 输出初始状态
    printf("=== 电子设备状态管理系统 ===\n");
    printf("设备ID\t设备名称\t\t状态\n");
    printf("--------------------------------\n");
    printf("%d\t%-15s\t%s\n", d1.id, d1.name, statusToString(d1.state));
    printf("%d\t%-15s\t%s\n", d2.id, d2.name, statusToString(d2.state));
    
    printf("\n=== 改变设备状态 ===\n");
    
    // 改变设备状态
    d1.state = SLEEP;  // 笔记本电脑进入睡眠状态
    d2.state = ON;     // 智能手机开机
    
    // 输出改变后的状态
    printf("设备状态已更新：\n");
    printf("--------------------------------\n");
    printf("%d\t%-15s\t%s\n", d1.id, d1.name, statusToString(d1.state));
    printf("%d\t%-15s\t%s\n", d2.id, d2.name, statusToString(d2.state));
    
    printf("\n=== 使用switch判断设备状态 ===\n");
    
    // 使用switch判断设备状态并输出描述性信息
    Device devices[2] = {d1, d2};
    
    for(int i = 0; i < 2; i++) {
        printf("设备%d (%s): ", devices[i].id, devices[i].name);
        
        switch(devices[i].state) {
            case ON:
                printf("设备正在运行，所有功能可用\n");
                break;
            case OFF:
                printf("设备已关闭，不消耗电力\n");
                break;
            case SLEEP:
                printf("设备处于低功耗模式，可快速唤醒\n");
                break;
            default:
                printf("设备状态异常\n");
        }
    }
    
    return 0;
}